<?php
// tabele Blog
        define('BLCATEGO','blog_category');
        define('BLCATELA','blog_category_lang');
        define('BLOWPISY','blog_wpisy');
        define('BLOWPILA','blog_wpisy_lang');
        define('BLOZDJEC','blog_wpisy_photos');
        define('BLSETTIN','blog_settings');
        
include_once 'BlogModel.php';

class BlogController extends BlogModel {
	private $vars;
	protected $BlogRootPath;			// sciezka do folderu galerii
	protected $db;							// obiekt bazy SQLite PhotoGallery
	protected $maxfilesize; 				// maksymalny rozmair pliku
	protected $tpl;

#TODO public	
	public function __construct($opc=null){
		global $config,$parameters,$settings;
		$this->vars = (is_string($config->parameters)) ? explode(',',$config->parameters) : explode(',',$opc);
		
		// sciezka do plikow tpl
		// jesli zamieszczono pliki tpl dla Blog w theme to je wczytuj
		// jesli nie to domyslne pliki z view/Blog
		$this->tpl = (tools::_dir_exists("Blog","../application/theme/theme_{$settings['szablon']}/{$settings['ramka_theme']}_{$settings['ramka_theme_kolor']}")) ? "theme_{$settings['szablon']}/{$settings['ramka_theme']}_{$settings['ramka_theme_kolor']}/" : "";
		

		$this->BlogRootPath  = "../public/users/".str_replace('www.','',$_SERVER['HTTP_HOST'])."/blog/";
		tools::_add_folder($this->BlogRootPath);
		// sciezka do root bazy danych photogallery
		tools::_add_folder($parameters['blog']['host']);
		// maksymalna pojemnosc pliku
		$this->maxfilesize = $parameters['blog']['maxfilesize'];
		// określenie nazwy bazy blog
		$nazwa_bazy__ = str_replace('www.','',$_SERVER['HTTP_HOST']).".db";
		// przygotowanie parametrów do zalozenia bazy
		$parametryBazyBloga = array('drivers'=>array('driver'=>'sqlite'),
							  'sqlite'=>array('host'=>$parameters['blog']['host'],
											  'database'=>$nazwa_bazy__ ));
		$this->db = config::getDB($parametryBazyBloga);
		// ustawienia
		tools::_assign("settings_blog",$this->pobierzUstawienia());
		
		BlogController::uprawnienia();
		
		$parameters['sqlite']['host'] = $parameters['blog']['host'];
		$parameters['drivers']['dbinstall'] = $parameters['blog']['dbinstall'];
		config::_instal_database($parameters['drivers']['driver'],$this->db);		
	}
	
	
	public function indexAction(){
		global $objSession,$config;
		$toolbar__0 = array(',,nowa_kategoria'=>array('nazwa'=>'Dodaj kategorię Bloga','ikona'=>'32_new_group.gif'));
		$toolbar__1 = array(",,dodajNowyWpis,{$this->vars[2]}"=>array('nazwa'=>'Dodaj wpis do Bloga','ikona'=>'32_new.gif'),',,edytuj_kategorie'=>array('nazwa'=>'Edytuj nazwę kategrii','ikona'=>'32_edit.gif'));
		$toolbar__2 = array(',Blog,wyzerujUstawienia'=>array('nazwa'=>'Ustawienia domyślne Bloga','ikona'=>'32_settings_default.gif'));
		tools::_display("{$this->tpl}Blog/css.tpl");
	
		switch($this->vars[1]){
			case 'nowa_kategoria':
				if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){ tools::_redirect('zaloguj_sie.html'); return;}
				$this->toolbar($toolbar__0);
				tools::_display("{$this->tpl}Blog/dodaj_kategorie.tpl");
				tools::_display("{$this->tpl}Blog/footer-main.tpl");				
				break;
				
			case 'edytuj_kategorie':
				if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){ tools::_redirect('zaloguj_sie.html'); return;}
				$this->toolbar($toolbar__0);
				$kategoria__ = $this->pobiezKategorie($this->vars[2]);
				tools::_assign('kateg',$kategoria__);
				tools::_display("{$this->tpl}Blog/edytuj_kategorie.tpl");	
				tools::_display("{$this->tpl}Blog/footer-main.tpl");			
				break;

			case 'edytujWpis':
				if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){ tools::_redirect('zaloguj_sie.html'); return;}
				$this->toolbar($toolbar__0);
				tools::_assign('kateg',$this->pobiezKategorie($this->vars[2],$config->__lang));
				tools::_assign('photo',$this->pobierzJedenWpis($this->vars[3]));
				tools::_display("{$this->tpl}Blog/edytuj_wpis.tpl");		
				tools::_display("{$this->tpl}Blog/footer-main.tpl");		
				break;
				
			case 'wyswietlWpisy':
				tools::_assign('kateg',$this->pobiezKategorie($this->vars[2]));				
				$this->wyswietlWpisy(null,$toolbar__1);
				
				// lista malych kategorii
				$iloscPg__ = $this->zliczAktywneKategorie();
				if ($iloscPg__ > 1 ){					
					$gallery__ = $this->pobiezKategorie();
					tools::_assign("kategorie",$gallery__);
					tools::_display("{$this->tpl}Blog/lista_kategorii_male.tpl");
					tools::_display("{$this->tpl}Blog/footer-main.tpl");
				}
				
				break;
				
			case 'wyswietlJedenWpis':
				$this->toolbar($toolbar__0);
				tools::_assign('kateg',$this->pobiezKategorie($this->vars[2],$config->__lang));
				tools::_assign('jeden',$this->pobierzJedenWpis($this->vars[3],$config->__lang));
				tools::_display("{$this->tpl}Blog/jeden_wpis.tpl");		
				tools::_display("{$this->tpl}Blog/footer-main.tpl");		
				break;

				
			case 'archiwum':
				tools::_assign('archiwum',1);
				tools::_assign('kateg',$this->pobiezKategorie($this->vars[2]));				
				$this->wyswietlWpisy(null,$toolbar__1,'LIMIT 6,300');
				
				// lista malych kategorii
				$iloscPg__ = $this->zliczAktywneKategorie();
				if ($iloscPg__ > 1 ){					
					$gallery__ = $this->pobiezKategorie();
					tools::_assign("kategorie",$gallery__);
					tools::_display("{$this->tpl}Blog/lista_kategorii_male.tpl");
					tools::_display("{$this->tpl}Blog/footer-main.tpl");
				}
				
				break;			
				
			case 'dodajNowyWpis':
				if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){ tools::_redirect('zaloguj_sie.html'); return;}
				$this->toolbar($toolbar__1);
				tools::_assign('kateg',$this->pobiezKategorie($this->vars[2],$config->__lang));
				tools::_display("{$this->tpl}Blog/dodaj_wpis.tpl");
				tools::_display("{$this->tpl}Blog/footer-main.tpl");
				break;
								
			case 'ustawienia_blog':
				$this->toolbar($toolbar__2);
				tools::_display("{$this->tpl}Blog/ustawienia.tpl");
				tools::_display("{$this->tpl}Blog/footer-main.tpl");
				break;
				
			default:
				// lista kategorii z przykładowymi zdjęciami				
				$iloscPg__ = $this->zliczAktywneKategorie();
				if ($iloscPg__ == 1 && !$objSession->IsLoggedIn() ){					
					$this->wyswietlWpisy($this->domyslnaGaleria(),$toolbar__1);				
				}else{
					$this->toolbar($toolbar__0);
					$gallery__ = $this->pobiezKategorie();
					$gallery__ = (is_array($gallery__)) ? $gallery__ : array();
					tools::_assign("kategorie",$gallery__);
					tools::_display("{$this->tpl}Blog/lista_kategorii.tpl");
					tools::_display("{$this->tpl}Blog/footer-main.tpl");
				}
				tools::_display("{$this->tpl}Blog/footer-main.tpl");
		}
	}

	
	public function najnowszeBlogiAction(){
		global $config,$smarty;
		switch($this->vars[1]){					
			case 'ustawienia_blog_najnowsze':
				$this->toolbar($toolbar__2);
				tools::_display("{$this->tpl}Blog/ustawienia_najnowsze.tpl");
				break;
				
			default:
				$this->toolbar(null,'_najnowsze');
				$settings_blog = $smarty->get_template_vars('settings_blog');
				$wpisy__ = $this->pobiezWpisyJednejKategorii('najnowsze',$config->__lang,'',"LIMIT {$settings_blog['liczba_wysiwietlanych_najnowszych_wpisow']}");
				$wpisy__ = (is_array($wpisy__)) ? $wpisy__ : array();
				tools::_assign('wpisy',$wpisy__);
				tools::_display("{$this->tpl}Blog/lista_najnowszych_wpisow_bloga.tpl");
				

		}
	}
	
	
#TODO private
	private function wyswietlWpisy($blcIDDefault=null,$toolbar, $limit=' LIMIT 5'){
		global $objSession,$config;
		if(!is_null($blcIDDefault)) $this->vars[2] = $blcIDDefault;
		
		tools::_assign('kateg',$this->pobiezKategorie($this->vars[2],$config->__lang));
		$logged = ($objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a') ? 1 : 0;
		$ilosc_wpisow = $this->zliczWpisyKategorii($this->vars[2]);
		
		if($logged){
			$this->toolbar($toolbar);
			if($ilosc_wpisow == 0){ 	
				echo 'Brak wpisów w tej kategorii...';			
				tools::_display("{$this->tpl}Blog/dodaj_wpis.tpl");
			}else{
				$wpisy__ = $this->pobiezWpisyJednejKategorii($this->vars[2],$config->__lang,'',$limit);
				$wpisy__ = (is_array($wpisy__)) ? $wpisy__ : array();
				tools::_assign('wpisy',$wpisy__);
				tools::_display("{$this->tpl}Blog/lista_wpisow_kategorii.tpl");
			}
		}else{
			$wpisy__ = $this->pobiezWpisyJednejKategorii($this->vars[2],$config->__lang, ' AND blwStatus = 0',$limit);
			$wpisy__ = (is_array($wpisy__)) ? $wpisy__ : array();
			tools::_assign('wpisy',$wpisy__);
			tools::_display("{$this->tpl}Blog/lista_wpisow_kategorii.tpl");
			
		}
	}
	
	private function toolbar($tool__=null,$typ=""){
		global $objSession;
		tools::_assign("toolbar_links",$tool__);		
		if ( $objSession->IsLoggedIn() && $objSession->GetUserData("stanowisko") == 'a') 
		tools::_display("{$this->tpl}Blog/toolbar{$typ}.tpl");
	}
	
	private static function uprawnienia(){
		global $objSession;
		if ( $objSession->IsLoggedIn() && $objSession->GetUserData("stanowisko") == 'a') 
		tools::_assign("uprawnienia",1);
	}
	
	private function iterateVars() {
		foreach($this as $key => $value) {
			try{
				if (is_array($value)) $value = print_r($value,true);
				if (!is_object($value))
				print "$key => $value\n<br/>";  
			}catch (Exception $e){
				echo "Obiekt => print error \n<br/>"; 
			}
		}
    }

#TODO forms

	public function zapiszUstawieniaAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
	
		$this->zapiszUstawienia();
		tools::_redirect($config->page.".html",null,0,'php');
	}
	
	public function zapiszNowaKategorieAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
	
		$pgID = $this->zapiszNowaKategorie();
		tools::_redirect($config->page.",,wyswietlWpisy,$pgID,.html",null,0,'php');		
	}
	
	public function zapiszEdytowanaKategorieAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
		$this->zapiszEdytowanaKategorie();
		tools::_redirect($config->page.".html",null,0,'php');		
	}
	
	public function pgKategoriaUpAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
		$this->pgLpUp($this->vars[2]);
		tools::_redirect($config->page.".html",null,0,'php');		
	}
	
	public function pgKategoriaDownAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
		$this->pgLpDown($this->vars[2]);
		tools::_redirect($config->page.".html",null,0,'php');		
	}

	public function wpisUpAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
		$this->phLpUp($this->vars[3]);
		tools::_redirect($config->page.",,wyswietlWpisy,{$this->vars[2]}.html",null,0,'php');		
	}
	
	public function wpisDownAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
		$this->phLpDown($this->vars[3]);
		tools::_redirect($config->page.",,wyswietlWpisy,{$this->vars[2]}.html",null,0,'php');		
	}
	
	public function zablogujWpisBlogaAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
		$this->zablokujOdblokujZdjecie($this->vars[3]);
		tools::_redirect($config->page.",,wyswietlWpisy,{$this->vars[2]}.html",null,0,'php');		
	}

	
	public function zablokujGalerieAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
		$this->zablokujOdblokujGalerie($this->vars[2]);
		tools::_redirect($config->page.".html",null,0,'php');		
	}
	
	public function zapiszNowyWpisAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
		$this->zapiszNowyWpisKategorii($config->blcID);	
		tools::_redirect($config->page.",,wyswietlWpisy,{$config->blcID}.html",null,0,'php');	
	}

	public function zapiszEdytowanyWpisAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
		
		$this->zapiszDaneWpisuBloga($config->blwID);		
		//$this->podmienPlikGalerii();
		tools::_redirect($config->page.",,wyswietlWpisy,{$config->blcID}.html",null,0,'php');		
	}
	
	public function usunWpisBlogaAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
		$this->usunZdjeciePG($this->vars[3]);
		tools::_redirect($config->page.",,wyswietlWpisy,{$this->vars[2]}.html",null,0,'php');
	}
	
	public function usunKategorieAction(){
		global $config, $objSession;
		if ( !$objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){	
			tools::_redirect('zaloguj_sie.html'); return;
		}
		$this->usunKategorieBloga($this->vars[2]);
		tools::_redirect($config->page.".html",null,0,'php');
		
	}
	
	public function ikonyGaleriiAction($v=null){
		$params = (is_string($v)) ? explode(';',$v) : null;	
		$ikona__ = $this->pobiezIkonkeKategorii($params[0],$params[1]);
		tools::_assign('icon',$ikona__);	
		tools::_display("{$this->tpl}Blog/lista_kategorii_ikonki_duze.tpl");
	}
	
	public function ikonyGaleriiMaleAction($v=null){
		$params = (is_string($v)) ? explode(';',$v) : null;	
		$ikona__ = $this->pobiezIkonkeKategorii($params[0],$params[1]);
		tools::_assign('icon',$ikona__);	
		tools::_display("{$this->tpl}Blog/lista_kategorii_ikonki_male.tpl");
	}
	
	public function wyzerujUstawieniaAction(){
		global $config;
		echo $this->wyzerujUstawieniaPG();
		// ustawienia
		tools::_assign("settings_blog",$this->pobierzUstawienia());
		tools::_redirect($config->page.",,ustawienia_photogallery.html",null,0,'php');
	}
	
}